The background description provided herein is for the purpose of generally presenting the context of the disclosure. Work of the inventors hereof, to the extent the work is described in this background section, as well as aspects of the description that may not otherwise qualify as prior art at the time of filing, are neither expressly nor impliedly admitted as prior art against the present disclosure.
Embodiments of the disclosure generally pertain to systems and methods for processing data. In particular, embodiments of the disclosure pertain to systems and methods for decoding data.
Different decoders can be used to decode data to achieve different results. Recent codes, such as low-density parity check (LDPC) codes, typically rely on iterative decoding. Iterative decoders are a type of decoder in which the decoding task is performed repetitively until stopping criterion are achieved. These stopping criterion can be based on meeting or exceeding a specific degree of certainty or uncertainty in the results of the decoding.
More particularly, an iterative decoder takes information from a channel as input and performs the decoding by iteratively passing messages between computation nodes. The computation nodes represent the symbols within a codeword. The decoder takes the information from the channel, hereinafter referred to as “channel information,” which takes into account the particular code structure and passes the channel information to a computation unit. This computation unit then passes information from the computation unit, hereinafter known as “extrinsic information,” back to each computation node. The computation nodes then use this extrinsic information together with the channel information to compute new messages to the computation unit. This process occurs repetitively until stopping criterion are satisfied.
The above-described message passing algorithm used by decoders, including LDPC decoders, is stored in the decoder as a matrix, referred to as a “parity-check matrix,” which typically defines the relationship between nodes. The columns of the parity check matrix typically define nodes corresponding to the codeword, while the rows of the parity-check matrix define the nodes corresponding to the parity-check bits. To minimize the cycles between nodes, the parity-check matrices are typically low density, or sparse. Decoders parse through the parity-check matrices by scanning through the parity-check matrix row-wise or column-wise.
LDPC decoders may operate for a range of code configurations (i.e., range of codeword lengths, range of code rates and range of sector sizes). For an LDPC decoder to decode different code configurations, it would necessarily have to be pre-loaded with different parity-check matrices, each corresponding to a particular code configuration. In practice, this results in wasted cycles and wasted storage when a user selects only one code configuration from the range of available code configurations.